Mainframe data processing, and more recently distributed computing, have required increasingly large amounts of data storage. This data storage has been most economically provided by an array of low-cost disk drives integrated with a large semiconductor cache memory.
Many applications access data that is stored in files of a file system. The file system is a hierarchical arrangement of the files such that a particular file has a path name through the file system. The path name includes a sequence of names beginning with the name of a root directory of the file, possibly including the names of one or more sub-directories, and ending with a name for the file. The file system also includes a mapping of the directories and files in the file system to file system blocks, and a mapping of the file system blocks to logical blocks of storage.
In order to access data of a file, an application program sends one or more file access requests to a system program known as a file system manager. The application program typically specifies a pathname for the file, an offset from the beginning of the file, and an extent of data to be read or written starting at the offset in the file. For example, the offset is a specified number of bytes from the beginning of the file, and the extent of data is a specified number of consecutive bytes starting at the offset in the file. The file system manager maps the file name, offset, and extent to logical file system blocks mapped to logical blocks of storage, and sends logical block access commands to a volume manager or storage subsystem.
The volume manager or storage subsystem maps the logical blocks of storage to physical blocks of storage in storage devices such as disk drives. This logical-to-physical mapping may involve striping of the extent of data across a redundancy group of disk drives in a Redundant Array of Inexpensive Disks (RAID).
In the data processing art, there has been a general trend to specialize and distribute data processing tasks among an increasing number data processors. For example, more than a decade ago, it was common for a mainframe computer to be programmed with a file system manager and various application programs that invoked the file system manger in order to access files of the file systems. In turn, the mainframe computer sent logical block access commands to another mainframe processor of a cached disk array.
More recently, it has been common for application programs to be executed by workstations such as personal computers networked to file servers. Each file server is programmed with a file system manager. Each file server may include a volume manager for access to storage of disk drives in the file server. However, file servers have been networked or clustered in various ways to enable share access to storage subsystems or arrays of disk drives by multiple workstations.
Data consistency problems may arise if two file servers share access to the same file system in storage. As described in Xu et al. U.S. Pat. No. 6,324,581, one way to solve this data consistency problem is to designate one of the file servers to be an exclusive owner of access rights to each file system. The exclusive owner of the access rights to a file system, however, may delegate data access or metadata management tasks to other file servers. For example, if a first file server receives a request from a network client for access to a file system owned by a second file server, then the first file server sends a metadata request to the second file server. The second file server responds by placing a lock on the file and returning metadata of the file. The first file server uses the metadata of the file to formulate a data access command that is used to access the file data in the file system directly to the disk array over a bypass data path that bypasses the second file server.
As further described in Jiang et al. U.S. patent application Publication 2005/0240628 published Oct. 27, 2005, metadata management in a file server or storage network is delegated from a primary data processor to a secondary data processor in order to reduce data traffic between the primary data processor and the secondary data processor. The primary data processor retains responsibility for managing locks upon objects in the file system that it owns, and also retains responsibility for allocation of free blocks and inodes of the file system. The leasing of free blocks and inodes to the secondary and the granting of locks to the secondary enables the secondary to perform other metadata management tasks such as appending blocks to a file, truncating a file, creating a file, and deleting a file.